package com.yxinsur.imc.business.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxinsur.imc.business.form.BrokerRoleForm;
import com.yxinsur.imc.common.annotation.Excel;
import com.yxinsur.imc.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.Date;
import java.util.List;

/**
 * 代理人信息对象 imc_broker
 *
 * @author imc
 * @date 2021-03-18
 */
@Data
@ToString
public class BrokerVo {
    private static final long serialVersionUID = 1L;

    /**
     * $column.columnComment
     */
    private Long id;

    @ApiModelProperty(name = "团队Id")
    @Excel(name = "团队Id",sort = 4)
    private Long teamId;

    @ApiModelProperty("团队名称")
    @Excel(name = "团队名称",sort = 5)
    private String teamName;

    @ApiModelProperty(name = "所辖团队Id")
    @Excel(name = "所辖团队Id",sort = 6)
    private Long rootTeamId;

    @ApiModelProperty("所辖团队名称")
    @Excel(name = "所辖团队名称",sort = 7)
    private String rootTeamName;

    /**
     * 上级的broker_id
     */
    @ApiModelProperty("上级的broker_id")
    private Long brokerUpId;

    /**
     * 姓名
     */
    @ApiModelProperty("姓名")
    @Excel(name = "姓名",sort = 3)
    private String fullName;

    /**
     * 工号-机构内唯一
     */
    @ApiModelProperty("代理人编码")
    @Excel(name = "代理人编码",sort = 2)
    private String brokerCode;

    /**
     * 证件类型
     */
    @ApiModelProperty("证件类型")
    @Excel(name = "证件类型",sort = 10)
    private String certiType;

    /**
     * 证件号
     */
    @ApiModelProperty("证件号码")
    @Excel(name = "证件号码",sort = 11)
    private String certiCode;

    /**
     * 性别
     */
    @ApiModelProperty("性别")
    @Excel(name = "性别",sort = 13,dictType = "sys_user_sex", readConverterExp = "0=男,1=女,2=未知")
    private String gender;

    /**
     * 生日
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty("生日")
    @Excel(name = "出生日期",sort = 12, width = 30, dateFormat = "yyyy-MM-dd")
    private Date birthday;

    /**
     * 移动电话
     */
    @ApiModelProperty("手机号码")
    @Excel(name = "手机号码",sort = 14)
    private String phone;

    /**
     * 详细地址
     */
    @ApiModelProperty("详细地址")
//    @Excel(name = "详细地址")
    private String address;

    /**
     * 代理人执业证号
     */
    @ApiModelProperty("代理人执业证号")
    @Excel(name = "代理人执业证号",sort = 21)
    private String quafNo;

    /**
     * 分红万能险资质
     */
    @ApiModelProperty("分红万能险资质")
//    @Excel(name = "分红万能险资质")
    private String ucoverNo;

    /**
     * 民族
     */
    @ApiModelProperty("民族")
//    @Excel(name = "民族")
    private String nation;

    /**
     * 婚姻状况
     */
    @ApiModelProperty("婚姻状况")
//    @Excel(name = "婚姻状况")
    private String maritalStatus;

    /**
     * 政治面貌
     */
    @ApiModelProperty("政治面貌")
//    @Excel(name = "政治面貌")
    private String politicalStatus;

    /**
     * 最高学历
     */
    @ApiModelProperty("学历")
    @Excel(name = "学历",sort = 15)
    private String highestEdu;

    /**
     * 毕业院校
     */
    @ApiModelProperty("毕业院校")
//    @Excel(name = "毕业院校")
    private String graduateSchool;

    /**
     * 开户行
     */
    @ApiModelProperty("开户行")
    @Excel(name = "开户行",sort = 19)
    private String accountBank;

    /**
     * 银行卡号
     */
    @ApiModelProperty("银行卡号")
    @Excel(name = "银行卡号",sort = 20)
    private String bankAccount;

    /**
     * 入职日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty("入职时间")
    @Excel(name = "入职时间",sort = 18,width = 30, dateFormat = "yyyy-MM-dd")
    private Date employDate;

    /**
     * 离职日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty("离职日期")
//    @Excel(name = "离职日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date leaveDate;

    /**
     * 离职原因
     */
    @ApiModelProperty(name = "离职原因")
//    @Excel(name = "离职原因")
    private String leaveCause;

    /**
     * 保单继承人broker_id
     */
    @ApiModelProperty(name = "保单继承人broker_id")
//    @Excel(name = "保单继承人broker_id")
    private Long orderHeirId;


    @ApiModelProperty("保单继承人姓名")
//    @Excel(name = "保单继承人姓名")
    private String orderHeirName;

    /**
     * 担保人姓名
     */
    @ApiModelProperty("担保人姓名")
//    @Excel(name = "担保人姓名")
    private String suretyName;

    /**
     * 担保人身份证
     */
    @ApiModelProperty("担保人身份证")
//    @Excel(name = "担保人身份证")
    private String suretyCertiCode;

    /**
     * 担保人联系电话
     */
    @ApiModelProperty("担保人联系电话")
//    @Excel(name = "担保人联系电话")
    private String suretyPhone;

    /**
     * 担保人联系地址
     */
    @ApiModelProperty("担保人联系地址")
//    @Excel(name = "担保人联系地址")
    private String suretyAddress;

    /**
     * 紧急联系人
     */
    @ApiModelProperty("紧急联系人")
//    @Excel(name = "紧急联系人")
    private String urgentContactsName;

    /**
     * 紧急联系电话
     */
    @ApiModelProperty("紧急联系电话")
//    @Excel(name = "紧急联系电话")
    private String urgentContactsPhone;

    /**
     * 紧急联系人关系
     */
    @ApiModelProperty("紧急联系人关系")
//    @Excel(name = "紧急联系人关系")
    private String urgentContactsRelation;



    @ApiModelProperty("所属机构Id")
    @Excel(name = "所属机构Id",sort = 8)
    private Long orgId;

    @ApiModelProperty("所属机构名称")
    @Excel(name = "所属机构名称",sort = 9)
    private String orgName;

    @ApiModelProperty("租户")
    private Long tenantId;

    @ApiModelProperty("推荐人姓名")
    @Excel(name = "推荐人姓名",sort = 16)
    private String brokerUpName;

    @ApiModelProperty("推荐人工号")
    @Excel(name = "推荐人编码",sort = 17)
    private String brokerUpCode;

    @ApiModelProperty("代理人职级信息")
//    @Excel(name = "代理人职级信息")
    private String brokerRoleName;

    @ApiModelProperty("是否在职 Y N")
    @Excel(name="状态",sort = 1,dictType="broker_status", readConverterExp = "Y=在职,N=离职")
    private String status;

    @ApiModelProperty("是否锁定，Y锁定，N未锁定")
    private String isLocked;

    @ApiModelProperty("团队负责人姓名")
//    @Excel(name = "团队负责人姓名")
    private String leaderName;//所在团队负责人姓名
    @ApiModelProperty("团队负责人工号")
//    @Excel(name = "团队负责人工号")
    private String leaderCode;//工号
    @ApiModelProperty("团队负责人id")
//    @Excel(name = "团队负责人id")
    private Long leaderId;//id
    /**
     * 代理人角色信息
     */
    @ApiModelProperty("代理人角色信息")
    private List<BrokerRoleVo> roles;

    @ApiModelProperty("代理人头像地址")
    private String avatar;

    @ApiModelProperty("代理人签约文件地址")
    private String brokerContractUrl;

}
